 package com.sgv.model.utils;

import com.archtecture.control.enums.Mensagem;

/**
 * Enumerador que contem os código dos erros do Mysql para o tratamento de exceções.
 * 
 * @author breno.meneses
 * 
 */
public enum TabelaErrosMySql {

	INSERIR_NULL_NO_CAMPO(1048, Mensagem.FATAL_ERRO_CADASTRO), // alterar Código de erro quando inserido NULL em um campo NOTNULL
	ENTIDADE_DUPLICADA(1062, Mensagem.ERROR_ERRO_CADASTRO_REGISTRO_DUPLICADO), // Código de erro quando uma UNIQUE for violada
	INSERIR_NULL_NA_ENTIDADE(1452, Mensagem.FATAL_ERRO_CADASTRO), // Código de erro quanto inserido um código INEXISTENTE na coluna da FK
	DELETE_ENTIDADE_JA_UTILIZADA(1451, Mensagem.ERROR_ERRO_EXCLUSAO_NEGADA); // alterar Código de erro quando excluir um registro já utilizado por outro registro.

	private Integer codigo;
	private Mensagem mensagemNegocio;

	private TabelaErrosMySql(Integer codigo, Mensagem pMensagensNegocio) {
		this.codigo = codigo;
		this.mensagemNegocio = pMensagensNegocio;
	}

	/**
	 * @return the codigo
	 */
	public Integer getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 *            the codigo to set
	 */
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the mensagemNegocio
	 */
	public Mensagem getMensagemNegocio() {
		return mensagemNegocio;
	}

	/**
	 * @param mensagemNegocio
	 *            the mensagemNegocio to set
	 */
	public void setMensagemNegocio(Mensagem mensagemNegocio) {
		this.mensagemNegocio = mensagemNegocio;
	}

	/**
	 * Retronar o ENUM pelo codigo do Erro
	 * 
	 * @param pCodigoErro
	 *            Codigo do erro
	 * @return {@link TabelaErrosMySql}
	 */
	public static TabelaErrosMySql valueOf(Integer pCodigoErro) {
		for (TabelaErrosMySql lEnum : TabelaErrosMySql.values()) {
			if (lEnum.getCodigo().equals(pCodigoErro)) {
				return lEnum;
			}
		}
		return null;
	}

}
